Subject: DLSW version 0.12 (2 of 8)

From: "Alan K. Bartky, Manager of Technology" <[email-masked]>
Date: Mon, 15 Aug 94 13:43:46 PDT

----------
X-Sun-Data-Type: text
X-Sun-Data-Description: text
X-Sun-Data-Name: text
X-Sun-Content-Lines: 1
X-Sun-Content-Length: 26

Here is the second part.

----------
X-Sun-Data-Type: default
X-Sun-Data-Description: default
X-Sun-Data-Name: dlsw2.txt
X-Sun-Content-Lines: 568
X-Sun-Content-Length: 27758


RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

     CONTROL MESSAGES (72 Bytes) (zero based offsets below shown in decimal (xx) )
    +--------------------------------+--------------------------------+
    | (00)Version Number             | (01) Header Length (= 72)      |
    +--------------------------------+--------------------------------+
    | (02) Message Length                                             |
    +--------------------------------+--------------------------------+
    | (04) Remote Data Link Correlator                                |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (08) Remote DLC Port ID                                         |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (12) Reserved Field                                             |
    +--------------------------------+--------------------------------+
    | (14) Message Type              | (15) Flow Control Byte         |
    +--------------------------------+--------------------------------+
    | (16) Protocol ID               | (17) Header Number             |
    +--------------------------------+--------------------------------+
    | (18) Reserved                                                   |
    +--------------------------------+--------------------------------+
    | (20) Largest Frame Size        | (21) SSP Flags                 |
    +--------------------------------+--------------------------------+
    | (22) Circuit Priority          | (23) Message Type (see note)   |
    +--------------------------------+--------------------------------+
    | (24) Target MAC Address  (non-canonical format)                 |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (30) Origin MAC Address  (non-canonical format)                 |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |            .                                 .                  |
    +--------------------------------+--------------------------------+
    | (36) Origin Link SAP           | (37) Target Link SAP           |
    +--------------------------------+--------------------------------+
    | (38) Frame Direction           | (39) Reserved                  |
    +--------------------------------+--------------------------------+
    | (40) Reserved                                                   |
    +--------------------------------+--------------------------------+
    | (42) DLC Header Length                                          |
    +--------------------------------+--------------------------------+
    | (44) Origin DLC Port ID                                         |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (48) Origin Data Link Correlator                                |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (52) Origin Transport ID                                        |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |

AIW DLSw Related Interest Group                                  [Page 11]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

    +--------------------------------+--------------------------------+
    | (56) Target DLC Port ID                                         |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (60) Target Data Link Correlator                                |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (64) Target Transport ID                                        |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (68) Reserved Field                                             |
    +--------------------------------+--------------------------------+
    | (70) Reserved Field                                             |
    +--------------------------------+--------------------------------+
             (Even Byte)                      (Odd Byte)

AIW DLSw Related Interest Group                                  [Page 12]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

     INFORMATION MESSAGE (16 Bytes)
    +--------------------------------+--------------------------------+
    | (00) Version                   | (01) Header Length (= 16)      |
    +--------------------------------+--------------------------------+
    | (02) Message Length                                             |
    +--------------------------------+--------------------------------+
    | (04) Remote Data Link Correlator                                |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (08) Remote DLC Port ID                                         |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (12) Reserved                                                   |
    +--------------------------------+--------------------------------+
    | (14) Message Type              | (15) Flow Control Byte         |
    +--------------------------------+--------------------------------+
             (Even Byte)                      (Odd Byte)

   The Version Number field (offset 0) is set to 0x31 (ASCII '1'), indicating a
   decimal value of 49.  This is used to indicate DLSw version 1.

   The Header Length field (offset 1) is 0x48 for control messages, indicating a
   decimal value of 72 bytes, and 0x10 for information and Independent Flow Control
   messages, indicating a decimal value of 16 bytes.

   The Message Length field (offset 2) defines the number of bytes within the data
   field following the header.

   The Flow Control field (offset 15)  is described in section 5.

   The Header Number field (offset 17) is 0x01, indicating a value of one.

   The Frame Direction field (offset 38) is set to 0x01 for frames sent from the
   origin DLSw to the target DLSw, and is set to 0x02 for frames sent from the
   target DLSw to the origin DLSw.

     Note:  The Remote Data Link Correlator and Remote DLC Port ID are set equal to
     the Target Data Link Correlator and Target DLC Port ID if the Frame Direction
     field is set to 0x01, and are set equal to the Origin Data Link Correlator and
     Origin DLC Port ID if the Direction Field is set to 0x02.

   The Protocol ID field is set to 0x42, indicating a decimal value of 66.

   The DLC Header Length is set to zero for SNA and is set to 0x23 for NetBIOS
   datagrams, indicating a length of 35 bytes.  This includes the Access Control
   (AC) field, the Frame Control (FC) field, Destination MAC Address (DA), the
   Source MAC Address (SA), the Routing Information (RI) field (padded to 18
   bytes), the Destination link SAP (DSAP), the Source link SAP (SSAP), and the LLC
   control field (UI).

   NOTE:  The values for the Message Type field are defined in a later section.
   Note that this value is specified in two different fields of the control message

AIW DLSw Related Interest Group                                  [Page 13]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   header.  Only the first field be used when parsing a received SSP message.  The
   second field is to be ignored by new implementations on reception.  The second
   field was left in for backwards compatibility with RFC 1434 implementations and
   this field may be used in future versions if needed.

   The SSP Flags field contains additional information related to the SSP message.
   The flags are defined as follows:

         Bit(s)      Name    Meaning
         ---------   -----   -------
         x... ....   SSPex   1 = explorer message (CANUREACH and ICANREACH)
         .xxx xxxx           not used

   Reserved fields are set to zero upon transmission and should be ignored upon
   receipt.

3.2. Address Parameters

   A data link is defined as a logical association between the two end stations
   using Data Link Switching.  It is identified by a Data Link ID (14 bytes)
   consisting of the pair of attachment addresses associated with each end system.
   Each attachment address is represented by the concatenation of the MAC address
   (6 bytes) and the LLC address (1 byte).  All MAC addresses are expressed in non-
   canonical (Token-Ring) format.

     DATA LINK ID   (14 Bytes)
    +--------------------------------+--------------------------------+
    | Target MAC Address                                              |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Origin MAC Address                                              |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Origin Link SAP                | Target Link SAP                |
    +--------------------------------+--------------------------------+

   An end-to-end circuit is identified by a pair of Circuit ID's.  A Circuit ID is
   a 64 bit number that identifies the DLC circuit within a single DLSw.  It
   consists of a DLC Port ID (4 bytes), and a Data Link Correlator (4 bytes).  This
   value is unique in a single DLSw and is assigned locally.  The pair of Circuit
   ID's along with the Data Link IDs,  uniquely identify a single end-to-end
   circuit.  Each DLSw must keep a table of these Circuit ID pairs, one for the
   local end of the circuit and the other for the remote end of the circuit.  In
   order to identify which Data Link Switch originated the establishment of a
   circuit, the terms, origin DLSw and target DLSw, will be employed in this
   document.

     CIRCUIT ID   (8 Bytes)
    +--------------------------------+--------------------------------+
    | DLC Port ID                                                     |

AIW DLSw Related Interest Group                                  [Page 14]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Data Link Correlator                                            |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+

   The Origin Transport ID and the Target Transport ID fields in the message header
   are used to identify the individual TCP/IP port on a Data Link Switch.  The
   values have only local significance.  However, each Data Link Switch is required
   to reflect the values contained in these two fields, along with the associated
   values for DLC Port ID and the Data Link Correlator, when returning a message to
   the other Data Link Switch.

   The following figure shows the use of the addressing parameters during the
   establishment of an end-to-end connection.  The CANUREACH, ICANREACH, and
   REACH_ACK messages all carry the Data Link ID, consisting of the MAC and Link
   SAP addresses associated with the two end stations.  The CANUREACH_ex is used to
   find a remote MAC and Link SAP address without establishing an SSP circuit.
   Upon receipt of a CANUREACH_cs message, the target DLSw starts a data link for
   each port, thereby obtaining a Data Link Correlator.  If the target station can
   be reached, an ICANREACH_cs message is returned to the origin DLSw containing
   the Target Circuit ID parameter.  Upon receipt, the origin DLSw starts a data
   link and returns the Origin Circuit ID to the target DLSw within the REACH_ACK
   message.

        +------------+                                  +------------+
        |Disconnected|                                  |Disconnected|
        +------------+     CANUREACH_cs (Data Link ID)  +------------+
              ------------------------------------------------->
                ICANREACH_cs (Data Link ID, Target Circuit ID)
              <------------------------------------------------
            REACH_ACK (Data Link ID, Origin Cir ID, Target Cir ID)
              ------------------------------------------------->
        +------------+                                  +------------+
        |Circuit Est.|                                  |Circuit Est.|
        +------------+                                  +------------+
            XIDFRAME (Data Link ID, Origin Cir ID, Target Cir ID)
              <------------------------------------------------>
             CONTACT (Data Link ID, Origin Cir ID, Target Cir ID)
              ------------------------------------------------->
            CONTACTED (Data Link ID, Origin Cir ID, Target Cir ID)
              <-------------------------------------------------
        +------------+                                  +------------+
        | Connected  |                                  | Connected  |
        +------------+                                  +------------+
               INFOFRAME (Remote Circuit ID = Target Circuit ID)
              ------------------------------------------------->
               INFOFRAME (Remote Circuit ID = Origin Circuit ID)
              <-------------------------------------------------

                     Figure 3.  DLSw Circuits and Connections

   During the exchange of the XIDFRAME, CONTACT, and CONTACTED messages, the pair
   of Circuit ID parameters is included in the message format along with the DATA
   LINK ID parameter.  Once the connection has been established, the INFOFRAME

AIW DLSw Related Interest Group                                  [Page 15]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   messages are exchanged with the shorter header.  This header contains only the
   Circuit ID associated with the remote DLSw.  The Remote Data Link Correlator and
   the Remote DLC Port ID are set equal to the Data Link Correlator and the DLC
   Port ID that are associated with the origin or target Data Link Switch,
   dependent upon the direction of the packet.

3.3. Correlators

   The use and contents of the Data Link Correlator, Port ID and Transport ID
   fields in SSP messages is an implementation choice.  These fields have local
   significance only and the values received from a partner DLSw must not be
   interpreted by the DLSw that receives them and should be echoed as is to partner
   DLSw in subsequent messages.

   However for correct interoperation, all implementations must obey the following
   rules on the assignment and fixing of these correlator fields for each transport
   connection or circuit:

   The Transport ID fields are learned from the first SSP message exchanged with a
   DLSw partner (the Capabilities exchange).  This field should not be varied by a
   DLSw after the capabilities exchange and must be reflected to the partner DLSw
   in every SSP control message.

   The Target Data Link Correlator, Target Port ID and Target Transport ID must
   remain the same once the Target DLSw has sent the ICANREACH_cs for a given
   circuit.  The Origin DLSw must store the values specified in the ICANREACH_cs
   and use these on all subsequent SSP messages for this circuit.

   The Origin DLSw must allow these fields to vary until the ICANREACH_cs is
   received.  Each SSP message issued for a circuit must reflect the values
   specified by the Target DLSw in the last SSP message for this circuit received
   by the Origin DLSw.  Binary zero should be used if no such message has yet been
   received for a given circuit (apart from the Target Transport ID which will have
   been learnt as specified above).

   The Origin Data Link Correlator, Origin Port ID and Origin Transport ID must
   remain the same once the Origin DLSw has issued the REACH_ACK for a given
   circuit.  The Target DLSw must store the values specified in the REACH_ACK and
   use these on all subsequent SSP messages for this circuit.

   The Target DLSw must allow these fields to vary until the REACH_ACK is received.
   Each SSP message issued for a circuit must reflect the values specified by the
   Origin DLSw in the last SSP message for this circuit received by the Target
   DLSw.  Binary zero should be used if no such message has yet been received for a
   given circuit (apart from the Origin Transport ID which will have been learnt as
   specified above).

   For the purposes of correlator exchange, explorer messages form a separate
   circuit.  Both DLSw partners must reflect the last received correlator values as
   specified above.  However correlators learned on explorer messages need not be
   carried over to a subsequent circuit setup attempt.  In particular, the Origin
   DLSw may elect to use the same values for the Origin Data Link Correlator and
   Origin Port ID when it issues a CANUREACH_cs after receiving an ICANREACH_ex or
   NETBIOS_NR_ex.  However the Target DLSw must not assume that the CANUREACH_cs
   will specify any of the Target Data Link Correlator or Target Port ID that were
   exchanged on the explorer frames.

AIW DLSw Related Interest Group                                  [Page 16]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

3.4. Largest Frame Size Field

   The Largest Frame Size (LF Size) field in the SSP Control Header is used to
   carry the LF Size bits across the DLSw connection.  This should be used to
   ensure that the two end-stations always negotiate a frame size to be used on a
   circuit that does not require the Origin and Target DLSw partners to re-segment
   frames.

   This field is valid on CANUREACH_ex, CANUREACH_cs, ICANREACH_ex, ICANREACH_cs,
   NETBIOS_NQ_ex and NETBIOS_NR_ex messages only. The contents of this field should
   be ignored on all other frames.

   Every DLSw forwarding a SSP frame to its DLSw partner must ensure that the
   contents of this frame reflect the minimum capability of the route to its local
   end-station or any limit imposed by the DLSw itself.

   The bit-wise definition of this field is as follows:

       7   6   5   4   3   2   1   0
      --------------------------------
     | c | r | b | b | b | e | e | e |
      --------------------------------

       c   .   .   .   .   .   .   .  LF Size Control flag
                                      (significant on messages from
                                       Origin to Target DLSw only)

                                      0=fail circuit if route obtained
                                        requires a smaller LF size
                                      1=don't fail the circuit but return
                                        the LF size obtained even if it is
                                        smaller

       .   r   .   .   .   .   .   .  Reserved
       .   .   b   .   .   .   .   .  Largest Frame Bit Base
       .   .   .   b   .   .   .   .  Largest Frame Bit Base
       .   .   .   .   b   .   .   .  Largest Frame Bit Base
       .   .   .   .   .   e   .   .  Largest Frame Bit Extended
       .   .   .   .   .   .   e   .  Largest Frame Bit Extended
       .   .   .   .   .   .   .   e  Largest Frame Bit Extended

               <----- LF Bits ----->

   Refer to IEEE 802.1D Standard, Annex C for encoding of Largest Frame base and
   extended bit values.

   The Origin DLSw "Size Control" flag informs a Target DLSw that chooses to reply
   to *_cs messages on the basis of cached information that it may safely return a
   smaller LF Size on the ICR_cs frame if it has had to choose an alternative route
   on which to initialize the circuit.  If this bit is set to 1, the Origin DLSw
   takes responsibility to ensure that the end-stations negotiate a suitable frame
   size for the circuit.  If this bit is set to 0, the Target DLSw must not reply
   to the CUR_cs if it cannot obtain a route to the Target end station that support
   an LF Size at least as large as that specified in the CUR_cs frame.

AIW DLSw Related Interest Group                                  [Page 17]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

3.5. Message Types

   The following table lists the protocol data units that are exchanged between
   Data Link Switches.  All values not listed are reserved for potential use in
   follow-on releases.

    Command            Function                            Type     flags
    -------            --------                           -------   -----
    CANUREACH_ex       Can U Reach Station-explorer        0x03    SSPex
    CANUREACH_cs       Can U Reach Station-circuit start   0x03
    ICANREACH_ex       I Can Reach Station-explorer        0x04    SSPex
    ICANREACH_cs       I Can Reach Station-circuit start   0x04
    REACH_ACK          Reach Acknowledgment                0x05
    DGRMFRAME          Datagram Frame (see Note 1)         0x06
    XIDFRAME           XID Frame                           0x07
    CONTACT            Contact Remote Station              0x08
    CONTACTED          Remote Station Contacted            0x09
    RESTART_DL         Restart Data Link                   0x10
    DL_RESTARTED       Data Link Restarted                 0x11
    ENTER_BUSY         Enter Busy (see Note 2)             0x0C
    EXIT_BUSY          Exit Busy (see Note 2)              0x0D
    INFOFRAME          Information (I) Frame               0x0A
    HALT_DL            Halt Data Link                      0x0E
    DL_HALTED          Data Link Halted                    0x0F
    NETBIOS_NQ_ex      NETBIOS Name Query-explorer         0x12    SSPex
    NETBIOS_NQ_cs      NETBIOS Name Query-circuit setup    0x12   (see note 3)
    NETBIOS_NR_ex      NETBIOS Name Recognized-explorer    0x13    SSPex
    NETBIOS_NR_cs      NETBIOS Name Recog.-circuit setup   0x13   (see note 3)
    DATAFRAME          Data Frame (see Note 1)             0x14
    HALT_DL_NOACK      Halt Data Link with no Ack          0x19
    NETBIOS_ANQ        NETBIOS Add Name Query              0x1A
    NETBIOS_ANR        NETBIOS Add Name Response           0x1B
    CAP_EXCHANGE       Capabilities Exchange               0x20
    IFCM               Independent Flow Control Message    0x21
    TEST_CIRCUIT_REQ   Test Circuit Request                0x7A
    TEST_CIRCUIT_RSP   Test Circuit Response               0x7B

    Note 1: Both the DGRMFRAME and DATAFRAME messages are used to carry
            information received by the DLC entity within UI frames.
            The DGRMFRAME message is addressed according to a pair of
            Circuit IDs, while the DATAFRAME message is addressed
            according to a Data Link ID, being composed of a pair of MAC
            addresses and a pair of link SAP addresses.  The latter is
            employed prior to the establishment of an end-to-end circuit
            when Circuit IDs have yet to be established or during circuit
            restart when Data Links are reset.

    Note 2: These messages are not used for the DLSw Standard but may
            be used by older DLSw implementations.  They are listed
            here for informational purposes.  These messages were added after
            publication of RFC 1434 and were deleted in this standard
            (adaptive pacing is now used instead).

    Note 3: These messages are not normally issued by a Standard DLSw, which
            uses the NB_*_ex messages as shown in section 4.1.1.  However if
            a Standard DLSw attempts to interoperate with older DLSw

AIW DLSw Related Interest Group                                  [Page 18]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

            implementations, these messages correspond to the NETBIOS_NQ and
            NETBIOS_NR messages used in RFC1434 both to locate the resource
            and to setup a circuit.  This document does not attempt to
            provide a complete specification of the use of these messages.

   For the exchange of NetBIOS control messages, the entire DLC header is carried
   as part of the message unit.  This includes the MAC header, with the routing
   information field padded to 18 bytes, and the LLC header.  The following message
   types are affected:  NETBIOS_NQ, NETBIOS_NR, NETBIOS_ANQ, NETBIOS_ANR, and
   DATAFRAME when being used by NetBIOS systems.  The routing information in the
   DLC header is not used by the remote Data Link Switch upon receiving the above
   five messages.

AIW DLSw Related Interest Group                                  [Page 19]